コード例 #1
0
        private void __eTree_generateLocalCheck(e_tskLimit Value)
        {
            BlockExpression block = Expression.Block(
                typeof(DateTime),
                new[] { pResult, pLimit },

                Expression.IfThenElse(eCompare,
                                      Expression.Assign(pResult, pDate),
                                      Expression.Assign(pResult, Expression.Invoke(eFncExpLimit))),
                pResult
                );

            fncLocalCheck = Expression.Lambda <Func <DateTime, DateTime> >(block, pDate).Compile();
        }
コード例 #2
0
        public period_localLimit(IDot start, IDot finish, e_tskLimit lType)
        {
            init_eventsInternal();

            dcdSlave  = new dotCheckDate(slaveCheck);
            dcdMaster = new dotCheckDate(masterCheck);

            _outerLimit = dmyChk;
            fncDuration = durNull;

            init_outerLimit();
            init_expTreeParameters();

            connectProject(null);

            this.start  = start;
            this.finish = finish;
            _limitDate  = start.date;

            limitType = lType;
        }
コード例 #3
0
ファイル: period_limit.cs プロジェクト: NickJ1984/planner
        public period_localLimit(IDot start, IDot finish, e_tskLimit lType)
        {
            init_eventsInternal();

            dcdSlave = new dotCheckDate(slaveCheck);
            dcdMaster = new dotCheckDate(masterCheck);

            _outerLimit = dmyChk;
            fncDuration = durNull;

            init_outerLimit();
            init_expTreeParameters();

            connectProject(null);

            this.start = start;
            this.finish = finish;
            _limitDate = start.date;

            limitType = lType;
        }
コード例 #4
0
        private void __prp_limitType_write(e_tskLimit Value)
        {
            e_tskLimit temp = _limitType;

            _limitType = Value;

            switch (Value)
            {
            case e_tskLimit.Earlier:
                setMasterStart(true);

                fncExpLimit = fncProjectStart;
                __eTree_makeBinary(ExpressionType.NotEqual, pDate, pDate);
                __eTree_generateLocalCheck(Value);

                funcFSInvert(true);
                break;


            case e_tskLimit.startFixed:
                setMasterStart(true);

                fncExpLimit = () => limitDate;
                __eTree_makeBinary(ExpressionType.NotEqual, pDate, pDate);
                __eTree_generateLocalCheck(Value);

                funcFSInvert(false);
                break;


            case e_tskLimit.startNotEarlier:
                setMasterStart(true);

                fncExpLimit = () => limitDate;
                __eTree_makeBinary(ExpressionType.GreaterThanOrEqual, pDate, pLimit);
                __eTree_generateLocalCheck(Value);

                funcFSInvert(false);
                break;


            case e_tskLimit.startNotLater:
                setMasterStart(true);

                fncExpLimit = () => limitDate;
                __eTree_makeBinary(ExpressionType.LessThanOrEqual, pDate, pLimit);
                __eTree_generateLocalCheck(Value);

                funcFSInvert(false);
                break;


            case e_tskLimit.Later:
                setMasterStart(false);

                fncExpLimit = fncProjectFinish;
                __eTree_makeBinary(ExpressionType.NotEqual, pDate, pDate);
                __eTree_generateLocalCheck(Value);

                funcFSInvert(true);
                break;


            case e_tskLimit.finishFixed:
                setMasterStart(false);

                fncExpLimit = () => limitDate;
                __eTree_makeBinary(ExpressionType.NotEqual, pDate, pDate);
                __eTree_generateLocalCheck(Value);

                funcFSInvert(false);
                break;


            case e_tskLimit.finishNotEarlier:
                setMasterStart(false);

                fncExpLimit = () => limitDate;
                __eTree_makeBinary(ExpressionType.GreaterThanOrEqual, pDate, pLimit);
                __eTree_generateLocalCheck(Value);

                funcFSInvert(false);
                break;


            case e_tskLimit.finishNotLater:
                setMasterStart(false);

                fncExpLimit = () => limitDate;
                __eTree_makeBinary(ExpressionType.LessThanOrEqual, pDate, pLimit);
                __eTree_generateLocalCheck(Value);

                funcFSInvert(false);
                break;
            }

            ev_limitTypeChanged(this, new EventArgs());

            onLimitTypeChange(new eventArgs_valueChange <e_tskLimit>(temp, _limitType));
        }
コード例 #5
0
ファイル: period_limit.cs プロジェクト: NickJ1984/planner
        private void __prp_limitType_write(e_tskLimit Value)
        {
            e_tskLimit temp = _limitType;
            _limitType = Value;

            switch (Value)
            {
                case e_tskLimit.Earlier:
                    setMasterStart(true);

                    fncExpLimit = fncProjectStart;
                    __eTree_makeBinary(ExpressionType.NotEqual, pDate, pDate);
                    __eTree_generateLocalCheck(Value);

                    funcFSInvert(true);
                    break;

                case e_tskLimit.startFixed:
                    setMasterStart(true);

                    fncExpLimit = () => limitDate;
                    __eTree_makeBinary(ExpressionType.NotEqual, pDate, pDate);
                    __eTree_generateLocalCheck(Value);

                    funcFSInvert(false);
                    break;

                case e_tskLimit.startNotEarlier:
                    setMasterStart(true);

                    fncExpLimit = () => limitDate;
                    __eTree_makeBinary(ExpressionType.GreaterThanOrEqual, pDate, pLimit);
                    __eTree_generateLocalCheck(Value);

                    funcFSInvert(false);
                    break;

                case e_tskLimit.startNotLater:
                    setMasterStart(true);

                    fncExpLimit = () => limitDate;
                    __eTree_makeBinary(ExpressionType.LessThanOrEqual, pDate, pLimit);
                    __eTree_generateLocalCheck(Value);

                    funcFSInvert(false);
                    break;

                case e_tskLimit.Later:
                    setMasterStart(false);

                    fncExpLimit = fncProjectFinish;
                    __eTree_makeBinary(ExpressionType.NotEqual, pDate, pDate);
                    __eTree_generateLocalCheck(Value);

                    funcFSInvert(true);
                    break;

                case e_tskLimit.finishFixed:
                    setMasterStart(false);

                    fncExpLimit = () => limitDate;
                    __eTree_makeBinary(ExpressionType.NotEqual, pDate, pDate);
                    __eTree_generateLocalCheck(Value);

                    funcFSInvert(false);
                    break;

                case e_tskLimit.finishNotEarlier:
                    setMasterStart(false);

                    fncExpLimit = () => limitDate;
                    __eTree_makeBinary(ExpressionType.GreaterThanOrEqual, pDate, pLimit);
                    __eTree_generateLocalCheck(Value);

                    funcFSInvert(false);
                    break;

                case e_tskLimit.finishNotLater:
                    setMasterStart(false);

                    fncExpLimit = () => limitDate;
                    __eTree_makeBinary(ExpressionType.LessThanOrEqual, pDate, pLimit);
                    __eTree_generateLocalCheck(Value);

                    funcFSInvert(false);
                    break;
            }

            ev_limitTypeChanged(this, new EventArgs());

            onLimitTypeChange(new eventArgs_valueChange<e_tskLimit>(temp, _limitType));
        }
コード例 #6
0
ファイル: period_limit.cs プロジェクト: NickJ1984/planner
        private void __eTree_generateLocalCheck(e_tskLimit Value)
        {
            BlockExpression block = Expression.Block(
                typeof(DateTime),
                new[] { pResult, pLimit },

                Expression.IfThenElse(eCompare,
                Expression.Assign(pResult, pDate),
                Expression.Assign(pResult, Expression.Invoke(eFncExpLimit))),
                pResult
                );

            fncLocalCheck = Expression.Lambda<Func<DateTime, DateTime>>(block, pDate).Compile();
        }