逆引きFormula 2.0 に戻る

「日付範囲が入力されている場合に、範囲が該当する週のグループすべてにレコードを表示したいのですが、実装方法のアイディアがあれば教えていただきたいです。(中略)。なお、マルチセレクトプロパティで複数選択した場合、選ばれているカテゴリすべてのグループに表示されることは確認しています。」という質問がありました。マルチセレクトであればよいとのことなので、マルチセレクトの雛形が作れればよいと判断しました。マルチセレクトが設定されていないものだけを集めたビューを用意して、そこで一括コピーすればいいかと思います。

  1. 開始日から終了日までの週番号を全て取り出し、unique にする

    lets(
    	/* 開始日*/
    	ds, prop("日付範囲").dateStart(),
    	/* 終了日 */
    	de, prop("日付範囲").dateEnd(),
    	/* 日付差分 */
    	n, de.dateBetween(ds, "days"),
    	/* 日付が設定されている場合 */
    	n >= 0 ?
       /* n+1 個分の.を作成 */
    	 ".".repeat(n + 1)
    	  /* 1文字ごとに分割 (n+1 個の . の配列) */
    		.split("")
    		/* 開始日から終了日までの日付配列に変換 */
    		.map(ds.dateAdd(index, "days"))
    		/* 週番号に変換 */
    		.map(100 + current.week())
    		/* 先頭の1をWに変換 */
    		.map(current.replace("^1", "W"))
    		/* ユニークなものだけを取り出し */
    		.unique()
    	/* 日付が設定されていない時 */
    	: ""
    )
    

    Untitled